package com.mycompany.sigemp.repository.hibernate;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

import com.mycompany.sigemp.model.Detalle;
import com.mycompany.sigemp.model.Pedido;
import com.mycompany.sigemp.repository.PedidoRepository;

@Repository
public class HibernatePedidoRepository extends HibernateDaoSupport implements PedidoRepository {
	
	@Autowired
	public HibernatePedidoRepository(SessionFactory sessionFactory){
		setSessionFactory(sessionFactory);
	}

	@SuppressWarnings("unchecked")
	@Override
	public Pedido obtnerPedidoPorCodigo(String codigo) {
		List<Pedido> lista = getHibernateTemplate().find("from Pedido where codigoPedido='"+codigo+"'");
		if(lista.size()==0)
			return null;
			return lista.get(0);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Detalle> obtenerDetalleDeUnPedido(String codigoPedido) {
		return getHibernateTemplate().find("from Detalle where codigoPedido='"+codigoPedido+"'");
	}

	@Override
	public void registrarUnPedido(Pedido p) {
		getHibernateTemplate().saveOrUpdate(p);
	}

	@Override
	public void eliminarUnPedido(Pedido p) {
		getHibernateTemplate().delete(p);
	}

	@Override
	public void eliminarDetallesDelPedido(Detalle detalle) {
		getHibernateTemplate().delete(detalle);
	}

	@SuppressWarnings("unchecked")
	@Override
	public Pedido obtenerElUltimoPedido() {
		List<Pedido> lista = getHibernateTemplate().find("from Pedido");
		if(lista.size()==0)
			return null;
			return lista.get(lista.size()-1);
	}

	@Override
	public void registrarDetalle(ArrayList<Detalle> lista) {
		for (Detalle detalle : lista) {
			getHibernateTemplate().saveOrUpdate(detalle);
		}
	}

	@Override
	public void actualizarPedido(Pedido ped) {
		getHibernateTemplate().update(ped);
	}

	@Override
	public void actualizarDetalle(Detalle detalle) {
		getHibernateTemplate().update(detalle);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Pedido> ObtenerTodosLosPedidosPorEstado(String estado) {
		return getHibernateTemplate().find("from Pedido where estado='"+estado+"'");
	}

	
}
